package cn.pconline.autoclub.util.ubb.node;

import cn.pconline.autoclub.util.ubb.EscapeUtils;
import cn.pconline.autoclub.util.ubb.Node;

/**
 *
 * @author xhchen
 */
public class UrlNode extends AbstractNode {
//	String attachRoot;

	public UrlNode() {}

	private UrlNode(String name, String attribute) {
		super.name = name;
		super.attribute = attribute;
	}

//	public void setAttachRoot(String attachRoot) {
//		this.attachRoot = attachRoot;
//	}

	@Override
	public StringBuilder getText(java.util.LinkedList<Node> stack) {
		StringBuilder sb = new StringBuilder();
//		boolean isAttach = false;
//		Attachment attach = null;
		sb.append("<a target=\"_blank\" href=\"");
		if (attribute != null) {
			attribute = attribute.trim();
//			if (isAttach(attribute)) {
//				attach = getAttach(attribute);
//				if (attach != null) {
//					sb.insert(0, "<img src='http://img.pconline.com.cn/images/upload/upc/tx/bbs6/1005/25/c1/4001835_1274784331214_1024x1024.png' border='0'>&nbsp;");
//					sb.append(attribute);
//					isAttach = true;
//				} else {
//					EscapeUtils.appendAttribute(attribute, sb);
//				}
//			} else {
				EscapeUtils.appendAttribute(attribute, sb);
//			}

		} else {
			sb.append(text);
		}
		sb.append("\">").append(text).append("</a>");
//		if (isAttach) {
//			sb.append(" - (文件大小：").append(formatFileSize(attach.getFileSize()));
//			sb.append(")");
			//sb.append("，下载次数：").append(attach.getDownloadCount()).append(")");
//		}

		return sb;
	}

	@Override
	public void appendText(CharSequence text) {
		if (attribute == null) {
			EscapeUtils.appendAttribute(text, super.text);
		} else {
			EscapeUtils.appendHtml(text, super.text);
		}
	}

	@Override
	public Node copyWithoutText() {
		UrlNode result =  new UrlNode(name, attribute);
//		result.setAttachRoot(attachRoot);
		return result;
	}

	@Override
	public Node build(String name, String attribute) {
		UrlNode result =  new UrlNode(name, attribute);
//		result.setAttachRoot(attachRoot);
		return result;
	}

//	boolean isAttach(String uri) {
//		return uri.startsWith(attachRoot + "/");
//	}

//	Attachment getAttach(String uri) {
//		Attachment result = null;
//		if (! isAttach(uri)) {
//			return result;
//		}
//
//		try {
//			result = Attachment.find(Long.parseLong(uri.substring(uri.lastIndexOf('/') + 1)));
//		} catch (Exception ex) {
//			// do nothing
//		}
//
//		return result;
//	}

//	static String formatFileSize(long fileSize) {
//		if (fileSize >= 1024 * 1024 * 1024) {
//			return String.format("%,.0f GB", (double) fileSize / (1024 * 1024 * 1024));
//		} else if (fileSize >= 1024 * 1024) {
//			return String.format("%,.0f MB", (double) fileSize / (1024 * 1024));
//		} else if (fileSize >= 1024) {
//			return String.format("%,.0f KB", (double) fileSize / 1024);
//		} else {
//			return String.format("%,d bytes", fileSize);
//		}
//	}
}
